//package com.yuntsg.给新单位部署或更新时候用;
//
//import cn.hutool.db.Db;
//import cn.hutool.db.Entity;
//import com.alibaba.druid.pool.DruidDataSource;
//import common.util.StringUtil;
//
//import java.sql.*;
//import java.util.ArrayList;
//import java.util.List;
//
//public class Update {
//    /**
//     * 查重系统给之前安装的单位同步数据库字段用,需要先连接隧道做本地数据库隧道后使用
//     *
//     * @param args
//     * @throws SQLException
//     */
//    public static void main(String[] args) throws SQLException {
//        /**
//         * A数据库
//         */
//        String database_a = "paper_analysis_local";
//        DruidDataSource ds_a = new DruidDataSource();
//        ds_a.setUrl("jdbc:mysql://10.1.1.14:3306/" + database_a);
//        ds_a.setUsername("root");
//        ds_a.setPassword("quanfang3.1415");
//        /**
//         * 循环两个数据库,收集表
//         */
//        List<String> aList = new ArrayList<>();
//        List<Entity> a_tables = Db.use(ds_a).query("show tables;");
//        for (Entity a_table : a_tables) {
//            String a_table_one = a_table.getStr("tables_in_" + database_a);
//            //System.out.println("A数据库中的表___" + a_table_one);
//            aList.add(a_table_one);
//        }
//
//
//        /**
//         * B数据库
//         */
//        String database_b = "paper_analysis_local_sec";
//        DruidDataSource ds_b = new DruidDataSource();
//        ds_b.setUrl("jdbc:mysql://localhost:3307/" + database_b);
//        ds_b.setUsername("root");
//        ds_b.setPassword("quanfang3.1415");
//        List<String> bList = new ArrayList<>();
//        List<Entity> b_tables = Db.use(ds_b).query("show tables;");
//        for (Entity b_table : b_tables) {
//            String b_table_one = b_table.getStr("tables_in_" + database_b);
//            //System.out.println("B数据库中的表___" + b_table_one);
//            bList.add(b_table_one);
//        }
//
//        /**
//         * 以A(线上版本为准)
//         */
//        List<String> table_no_curr = new ArrayList<>();
//        for (String aTable : aList) {
//            if (bList.contains(aTable)) {
//                //System.out.println("\n\n\n\n" + aTable + "是两个库同时存在的表");
//                //获取两个表的字段
//                List<Entity> listA = Db.use(ds_a).query("SHOW COLUMNS FROM " + aTable);
//                List<Entity> listB = Db.use(ds_b).query("SHOW COLUMNS FROM " + aTable);
//                //获取两个表的字段名字
//                List<String> a_col_list = new ArrayList<>();
//                List<String> b_col_list = new ArrayList<>();
//                //以A为主,如果b不存在,就新增
//                for (Entity entity : listA) {
//                    a_col_list.add(entity.getStr("field"));
//                }
//                for (Entity entity : listB) {
//                    b_col_list.add(entity.getStr("field"));
//                }
//                //循环A表的字段集合
//                for (String a_col : a_col_list) {
//                    if (!b_col_list.contains(a_col)) {
//                        System.out.println("\nB库中的" + aTable + "表里没有 " + a_col + " 字段!!!");
//                        for (Entity entity : listA) {
//                            String field = entity.getStr("field");
//                            if (field.equals(a_col)) {
//                                System.out.println("缺少的字段是___ " + entity);
//                                System.out.println("缺少的字段名___" + entity.getStr("field"));
//                                System.out.println("缺少的字段类型_" + entity.getStr("type"));
//                                if (StringUtil.isNotNull(entity.getStr("default"))) {
//                                    String aDefault = entity.getStr("default");
//                                    Db.use(ds_b).execute("ALTER TABLE " + aTable + " ADD COLUMN " + entity.getStr("field") + " " + entity.getStr("type").toUpperCase() + " DEFAULT " + aDefault + "  ;");
//                                } else {
//                                    Db.use(ds_b).execute("ALTER TABLE " + aTable + " ADD COLUMN " + entity.getStr("field") + " " + entity.getStr("type").toUpperCase() + " ;");
//                                }
//                                System.out.println("新增字段___" + a_col + "\n");
//                            }
//                        }
//                    } else {
//                        //System.out.println(aTable + "表中字段" + a_col + "一致");
//                    }
//                }
//
//
//            } else {
//                //如果不存在,则增加到list中
//                table_no_curr.add(aTable);
//            }
//        }
//        for (String aTable : table_no_curr) {
//            System.out.println("\u001B[31m表不存在___" + aTable + "\u001B[0m");
//        }
//
//        System.out.println("所有数据处理完毕");
//    }
//}
